#!/bin/sh

# Copyright(c) 2011 OpenDomo Services SL. Licensed under GPL v3 or later
# Isidro Catalan <skarvin@gmail.com>


# ----------------------------------------------------------------------------
# desc: Librearia de gestión para motion
# author: Isidro Catalan <skarvin@gmail.com>, http://www.opendomo.com
# date: Noviembre 2008
#
# CHANGES:
#
# ----------------------------------------------------------------------------

# Common video module vars
. "/etc/opendomo/videoConfVars.conf"

# ----------------------------------------------------------------------------
# isRunning ()
# params:
# ----------------------------------------------------------------------------
isRunning ()
{
	num=`ps -o comm | grep "^motion$" | wc -l`

	if [ "$num" != "0" ]; then
		echo "1"
	else
		echo "0"
	fi
}

# ----------------------------------------------------------------------------
# startMotion ()
# params:
# ----------------------------------------------------------------------------
startMotion ()
{
	# Check if the process is running
   res=`isRunning`

	if [ "$res" != "0" ]; then
			echo "#ERR There is an instance of motion running already"
			exit 1
	fi

	configCheck	
	# TODO: Generar el fichero de configuracion a traves de una plantilla pasandole
	# los parametros especificados, como minimo el id de camara
	$MTN -c $MTN_CNF_PATH/motion.conf 2> /tmp/motion_error 
	echo "#ERR: Video surveillance activated"
}

# ----------------------------------------------------------------------------
# stopMotion ()
# params:
# ----------------------------------------------------------------------------
stopMotion ()
{
   killall -9 motion 2> /dev/null
	sleep 3
	echo "#ERR: Video surveillance desactivated"		
}

# ----------------------------------------------------------------------------
# configCheck ()
# desc: Comprueba que todo este correctamente configurado, puede darse el caso
# de necesitar una reconfiguracion por una extraccion de un dispositivo 
# cuando el agente esta apagado, en ese caso, el agente no se entera al
# no ejecutarse el script de udev.
# ----------------------------------------------------------------------------
configCheck ()
{

   for i in `ls $MTN_CNF_PATH/odcam-*-usb.conf`; do
	video_dev=`awk -F" " '/^videodevice/ { print $2 }' $i`
	if [ ! -e "$video_dev" ]; then
		rm -f $i
		# Eliminamos la linea correaspondiente al hilo
		port=`awk -F" " '/^webcam_port/ { print $2 }' $i`		   	  		   
		cat $MTN_CNF_PATH/motion.conf | grep -v "odcam-$port-usb.conf" > /tmp/mtn.tmp
		cat /tmp/mtn.tmp > $MTN_CNF_PATH/motion.conf && rm /tmp/mtn.tmp				
	fi
   done	
}


# Executes the action
if [ -n "$1" ]; then

   case "$1" in
	   start)
		   startMotion;;
	   stop)
		   stopMotion;;
   esac

fi



